package com.lj.auth.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.lj.auth.params.LoginParams;
import com.lj.auth.params.PhoneLoginParams;
import com.lj.sys.entity.SysUser;

import java.io.OutputStream;

/**
 * @author luojing
 * @since 2024/10/29 10:26
 */
public interface SysAuthService {
    void captcha(String uuid, OutputStream out);

    boolean validate(String uuid, String captcha);

    /**
     * 校验验证码
     *
     * @param prefix  前缀
     * @param uuid    key
     * @param captcha 验证码
     * @return 是否校验成功
     */
    boolean validate(String prefix, String uuid, String captcha);

    /**
     * 账号密码认证的方式登录
     *
     * @param params 登录参数
     * @return 登录后的token信息
     */
    SaTokenInfo login(LoginParams params);

    /**
     * 获取一个手机短信验证码
     *
     * @param phone 手机
     */
    void phoneCaptcha(String phone);

    /**
     * 电话登录
     */
    SaTokenInfo loginByPhone(PhoneLoginParams params);

    /**
     * 真实登录逻辑
     *
     * @param sysUserId 系统用户id
     * @return 登录后的token信息
     */
    SaTokenInfo doLogin(Long sysUserId);

    /**
     * 真实登录逻辑
     *
     * @param sysUser 系统用户对象
     * @return 登录后的token信息
     */
    SaTokenInfo doLogin(SysUser sysUser);

    void logout();
}
